package com;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;

/**
 * @Description: 不同时间类之间的转换
 */
public class DateExchange {
    //时间类型转化都是借助时间戳
    //时间戳：距离1970年1月1日0时0分0秒的时间
    public static void main(String[] args) {

        // 新建java.util.Date
        java.util.Date dateU=new java.util.Date();
        System.out.println("新建 java.util.Date"+dateU);//现在的时间

        //借助时间戳新建java.sql.Date
        long id=System.currentTimeMillis();//获取时间戳
        java.sql.Date dates=new java.sql.Date(id);
        System.out.println("新建java.sql.Date："+dates);

        //将java.util.date转化为java.sql.Date
        java.util.Date dateU1=new java.util.Date();
        java.sql.Date dateS1=new java.sql.Date(dateU1.getTime());//系统时间获取时间戳getTime()方法
        System.out.println("util转sql："+dateS1);//2020-05-19
        System.out.println("SQL："+dateS1.getTime());
        System.out.println("Util："+dateU1.getTime());

        //将java.sql转化为java.util.Date
        java.util.Date dateU2=new java.util.Date(dateS1.getTime());//getTime()方法同上
        System.out.println("sql转util："+dateU2);//Tue May 19 17:12:43 CST 2020

        //java.sql.Timestamp (精确到毫秒,sql.Date子类）
        Timestamp t=new Timestamp(dateS1.getTime());//d是java.util.Date 将java.util.Date转换为Timestamp
        System.out.println("Timestamp："+t);//2018-09-11 17:14:54.44(.44是毫秒）
        System.out.println("时间戳："+t.getTime());//1536657348720 当前时间时间戳（毫秒）

        //SimpleDateFormat 时间和字符串之间的转化
        SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yy");

        //将时间转化为字符串
        String df=sdf.format(new java.util.Date());////sql由util中转
        System.out.println("时间转字符串："+df);

        //将字符串转化为时间
        String str="18-9-18";
        try {
            java.util.Date ddd=sdf.parse(str);//sql由util中转
            System.out.println("字符串转时间："+ddd);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

}
